package com.yazi.mxz.admin.jackson.filter;

import java.util.HashSet;
import java.util.Set;

import com.fasterxml.jackson.databind.ser.FilterProvider;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
import com.yazi.mxz.common.entity.beans.Category;
import com.yazi.mxz.common.jackson.as.CategoryAs;

public abstract class CategoryFilter {

	public static FilterProvider getWithCategory() {
		final Set<String> cat = new HashSet<String>();
		cat.add("category");
		cat.add("catId");
		cat.add("deep");
		cat.add("name");
		cat.add("pic");
		cat.add("type");
		final Set<String> parent = new HashSet<String>();
		parent.add("catId");
		parent.add("deep");
		parent.add("name");
		parent.add("pic");
		parent.add("type");
		

		return new SimpleFilterProvider().addFilter(
				Category.class.getSimpleName(),
				SimpleBeanPropertyFilter.filterOutAllExcept(cat)).addFilter(
				CategoryAs.class.getSimpleName(),
				SimpleBeanPropertyFilter.filterOutAllExcept(parent));
	}
	
	public static FilterProvider getWithCategories() {
		final Set<String> cat = new HashSet<String>();
		cat.add("categories");
		cat.add("catId");
		cat.add("deep");
		cat.add("name");
		cat.add("pic");
		cat.add("type");
		final Set<String> cats = new HashSet<String>();
		cats.add("catId");
		cats.add("deep");
		cats.add("name");
		cats.add("pic");
		cats.add("type");
		
		return new SimpleFilterProvider().addFilter(
				Category.class.getSimpleName(),
				SimpleBeanPropertyFilter.filterOutAllExcept(cat)).addFilter(
				CategoryAs.class.getSimpleName(),
				SimpleBeanPropertyFilter.filterOutAllExcept(cats));
	}

}
